/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.jSkyRoom.interfaces.major;

import java.util.Collection;
import ru.jSkyRoom.interfaces.additional.HasBodyTemplate;
import ru.jSkyRoom.interfaces.additional.HasImpactData;
import ru.jSkyRoom.interfaces.additional.HasSpells;
import ru.jSkyRoom.interfaces.additional.HasKeywords;
import ru.jSkyRoom.interfaces.stub.EquipSlot;
import ru.jSkyRoom.interfaces.stub.JSkySound;
import ru.jSkyRoom.interfaces.stub.MaterialType;
import ru.jSkyRoom.interfaces.sub.JSkyAttackData;
import ru.jSkyRoom.interfaces.sub.RaceGenderSettings;
import skyproc.RACE;
import skyproc.RACE.RACEFlags;
import skyproc.RACE.Size;
import skyproc.genenums.FirstPersonFlags;
import skyproc.genenums.Gender;

/**
 *
 * @author Rakev
 */
public interface Race extends Major, HasKeywords, HasBodyTemplate, HasImpactData, HasSpells {

    public boolean getFlag(RACEFlags flag);

    public void setFlag(RACEFlags flag);

    public void unsetFlag(RACEFlags flag);

    public Armor getWornArmor();

    public void setArmor(Armor armor);

    public RaceGenderSettings getRaceGenderSettings(Gender gender);

    public float getAccelerationRate();

    public void setAccelerationRate(float accelerationRate);

    public float getAimAngleTolerance();

    public void setAimAngleTolerance(float aimAngleTolerance);

    public float getAngularAcceleration();

    public void setAngularAcceleration(float angularAcceleration);

    public float getAngularTolerance();

    public void setAngularTolerance(float angularTolerance);

    public float getBaseCarryWeight();

    public void setBaseCarryWeight(float baseCarryWeight);

    public float getBaseMass();

    public void setBaseMass(float baseMass);

    public float getDecelerationRate();

    public void setDecelerationRate(float decelerationRate);

    public Size getSize();

    public void setSize(Size size);

    public float getFlightRadius();

    public void setFlightRadius(float flightRadius);

    public float getHealthRegen();

    public void setHealthRegen(float healthRegen);

    public float getInjuredHealthPct();

    public void setInjuredHealthPct(float injuredHealthPct);

    public float getMagickaRegen();

    public void setMagickaRegen(float magickaRegen);

    public float getStaminaRegen();

    public void setStaminaRegen(float staminaRegen);

    public float getStartingHealth();

    public void setStartingHealth(float startingHealth);

    public float getStartingMagicka();

    public void setStartingMagicka(float startingMagicka);

    public float getStartingStamina();

    public void setStartingStamina(float startingStamina);

    public float getUnarmedDamage();

    public void setUnarmedDamage(float unarmedDamage);

    public float getUnarmedReach();

    public void setUnarmedReach(float unarmedReach);

    public Collection<JSkyAttackData> getAttackData();

    public void addAttackData(JSkyAttackData data);

    public void removeAttackData(JSkyAttackData data);

    public MaterialType getMaterialType();

    public void setMaterialType(MaterialType id);

    public Major getDecapitationFX();

    public void setDecapitationFX(Major fx);

    public JSkySound getOpenLootSound();

    public void setOpenLootSound(JSkySound sound);

    public JSkySound getCloseLootSound();

    public void setCloseLootSound(JSkySound sound);

    public EquipSlot getUnarmedEquipSlot();

    public void setUnarmedEquipSlot(EquipSlot slot);

    public Collection<EquipSlot> getEquipSlots();

    public void addEquipSlot(EquipSlot slot);

    public void removeEquipSlot(EquipSlot slot);

    public Race getArmorRace();

    public void setArmorRace(Race race);

    public Race getMorphRace();

    public void setMorphRace(Race race);

    public skyproc.genenums.ActorValue getSkillBoostSkill(int boostIndex);

    public int getSkillBoostValue(int boostIndex);

    public void setSkillBoost(int boostIndex, skyproc.genenums.ActorValue skill, int value);

    public FirstPersonFlags getHeadBipedObject();

    public void setHeadBipedObject(FirstPersonFlags object);

    public FirstPersonFlags getHairBipedObject();

    public void setHairBipedObject(FirstPersonFlags object);

    public FirstPersonFlags getShieldBipedObject();

    public void setShieldBipedObject(FirstPersonFlags object);

    public FirstPersonFlags getBodyBipedObject();

    public void setBodyBipedObject(FirstPersonFlags object);

    public boolean getFlag(RACE.RaceFlags2 flag);

    public void setFlag(RACE.RaceFlags2 flag);

    public void unsetFlag(RACE.RaceFlags2 flag);

    public Collection<String> getMovementTypeNames();

    public void addMovementTypeName(String name);

    public void removeMovementTypeName(String name);

    public float getFaceGenMainClamp();

    public void setFaceGenMainClamp(float in);

    public float getFaceGenFaceClamp();

    public void setFaceGenFaceClamp(float in);

    public Race getAttackRace();

    public void setAttackRace(Race race);

}
